package com.zhdl.common.ytools;

import java.util.ArrayList;
import java.util.List;

/**
 * 探测器 状态调整
 */
public class EnumHelper {

    /**
     * 0x18 U8 探测器整机状态，整机状态，正常，预热，自检
     */
    public static String getDetectorStatusDesc(byte status) {
        return switch (status) {
            case 0 -> "预热/自检";
            case 1 -> "正常";
            case 2 -> "快速模式";
            case 3 -> "调试模式";
            case 9 -> "异常";
            default -> "其他" + status;
        };
    }

    /**
     * 当前报警状态 0x40 U8 1防区 报警状态 0 正常；1 预警；2 三级报警；3 二级报警；4 一级报警；5 报警保持；
     */
    public static String getAlarmStatusDesc(byte status) {
        return switch (status) {
            default -> "正常";
            case 1 -> "预警";
            case 2 -> "三级报警";
            case 3 -> "二级报警";
            case 4 -> "一级报警";
            case 5 -> "报警保持";
        };
    }


    /**
     * 获取参数设置保存结果描述
     */
    public static String getParamSetResultDesc(short result) {
        return switch (result) {
            default -> "未知" + result;
            case 0 -> "成功";
            case 1 -> "不支持该参数";
            case 2 -> "参数读写属性错误";
            case 3 -> "参数长度错误";
            case 4 -> "范围错误";
            case 5 -> "保存失败";
            case 6 -> "权限不够";
        };
    }

    /**
     * 0x19 U16 检测单元状态 bit0-主电源供电状态 bit1-检测试剂状态（异常描述为“液位低”）
     *
     * @param bsTemp
     * @return
     */
    public static List<String> getCheckUnitStatus(byte[] bsTemp) {
        List<String> checkUnitStatus = new ArrayList<>();
        if (bsTemp[0] == 1) checkUnitStatus.add("主电源供电异常");
        if (bsTemp[1] == 1) checkUnitStatus.add("检测试剂液位低");
        if (bsTemp[2] == 1) checkUnitStatus.add("云雾室漏气");
        if (bsTemp[3] == 1) checkUnitStatus.add("真空泵状态异常");
        if (bsTemp[4] == 1) checkUnitStatus.add("AlGaAs源状态异常");
        if (bsTemp[5] == 1) checkUnitStatus.add("气流状态异常");
        if (bsTemp[6] == 1) checkUnitStatus.add("存储芯片状态异常");
        if (bsTemp[7] == 1) checkUnitStatus.add("外部输入状态异常");
        if (bsTemp[8] == 1) checkUnitStatus.add("环境温度低");
        if (bsTemp[9] == 1) checkUnitStatus.add("后备电源状态异常");
        if (checkUnitStatus.size() == 0) checkUnitStatus.add("正常");
        return checkUnitStatus;
    }

    /**
     * 0x1A U8 各检测模块整体状态 0：正常 1：异常 bit0-微粒子检测模块 bit1-烟雾检测模块状态标识
     * 0 两个都正常
     * 1 微粒子检测模块异常
     * 2 烟雾检测模块异常
     * 3 两个都异常
     */
    public static String getDetectorModuleStatusDesc(short value) {
        return switch (value) {
            case 0 -> "正常";
            case 1 -> "微粒子检测异常";
            case 2 -> "烟雾检测异常";
            case 3 -> "均异常";
            default -> "其他" + value;
        };
    }

    /**
     * 0xEB U8 各检测模块使能标志 对应 bit 为 0：禁用 1：使能
     * bit0-微粒子检测模块
     * bit1-烟雾检测模块
     */
    public static String getDetectionModuleEnableDesc(byte value) {
        return switch (value) {
            case 0 -> "均使能";
            case 1 -> "微粒子检测使能";
            case 2 -> "烟雾检测使能";
            case 3 -> "均禁用";
            default -> "其他" + value;
        };
    }

}
